package com.vhans.db.service.impl;

import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vhans.core.utils.BeanCopyUtils;
import com.vhans.core.utils.StringUtils;
import com.vhans.db.model.dto.ConditionDTO;
import com.vhans.db.model.dto.image.ImageDTO;
import com.vhans.db.model.vo.image.*;
import com.vhans.db.mapper.ImageMapper;
import com.vhans.core.domain.Image;
import com.vhans.db.service.IImageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * 镜像Service业务层处理
 * 
 * @author vhans
 * @date 2023-05-20
 */
@Service
public class ImageServiceImpl extends ServiceImpl<ImageMapper, Image> implements IImageService {
    @Autowired
    private ImageMapper imageMapper;

    /**
     * 查询镜像列表
     * 
     * @param condition 条件
     * @return 镜像
     */
    @Override
    public List<ImageVO> selectImageVOList(ConditionDTO condition) {
        // 查询镜像信息
        List<ImageVO> imageVOList = imageMapper.selectImageVOList(condition);
        // 封装镜像信息,如果没有则delete
//        imageVOList.forEach(item -> {
//
//        });
        return imageVOList;
    }

    /**
     * 新增镜像
     * 
     * @param image 镜像
     * @return 插入id
     */
    @Override
    public Integer insertImage(ImageDTO image) {
        // 要添加的镜像
        Image newImage = BeanCopyUtils.copyBean(image, Image.class);
        imageMapper.insert(newImage);
        return newImage.getId();
    }

    /**
     * 获取镜像编辑信息
     *
     * @param id 镜像主键
     * @return 镜像
     */
    @Override
    public ImageInfoVO selectImageInfoById(Integer id) {
        // 查询镜像信息
        ImageInfoVO imageInfoVO = imageMapper.selectImageInfoById(id);
        Assert.notNull(imageInfoVO, "没有该镜像");
        return imageInfoVO;
    }

    /**
     * 修改镜像
     * 
     * @param image 镜像
     * @return 影响行
     */
    @Override
    public int updateImage(ImageDTO image) {
        // 要修改的镜像
        Image newImage = BeanCopyUtils.copyBean(image, Image.class);
        return imageMapper.updateById(newImage);
    }

    /**
     * 批量删除镜像
     *
     * @param idList 需要删除的镜像主键列表
     * @return 影响行
     */
    @Override
    public int deleteImageByIdIdList(List<Integer> idList) {
        // 删除镜像
        return imageMapper.deleteBatchIds(idList);
    }
}
